package jUnitTestes;

import java.util.Arrays;

import org.junit.Test;
import org.neuroph.core.learning.SupervisedTrainingElement;

import treinadores.CalculosAuxiliares;


public class TestesPosicionamentoTreinamentoRedeNeural {
	
	@Test
	public void testeTreinamentoRedeNeuralAvanco(){
		int counter = 0;
		for(int posicaoJogadorNossoTime = 0; posicaoJogadorNossoTime <= 15; posicaoJogadorNossoTime++){
	        for(int posicaoJogadorAdversario1 = 0; posicaoJogadorAdversario1 <= 15; posicaoJogadorAdversario1++){
	        	for(int posicaoJogadorAdversario2 = 1; posicaoJogadorAdversario2 <= 15; posicaoJogadorAdversario2 += 4)
	        	{
	        		for(int posicaoJogadorAdversario3 = 2; posicaoJogadorAdversario3 <= 15; posicaoJogadorAdversario3 += 4)
	            	{
	        			for(int posicaoJogadorAdversario4 = 3; posicaoJogadorAdversario4 <= 15; posicaoJogadorAdversario4 += 4)
	                	{
	        			    counter++;
//	                    	  double adiciona = Math.random();
//	                    	  
//	                    	  if(adiciona < 0.1)
//	                    	  {
	                    		  int [] jogadores = {posicaoJogadorNossoTime,
	                    				  posicaoJogadorAdversario1,posicaoJogadorAdversario2,
	                    				  posicaoJogadorAdversario3
	                    				  ,posicaoJogadorAdversario4};
	                    		  
	                    		  printSaidaDesejada(jogadores, "Entrada");
	                    		  
	                    		  double [] saidaDesejada = CalculosAuxiliares.getSaidaDesejada(posicaoJogadorNossoTime, Arrays.copyOfRange(jogadores, 1, jogadores.length));
	                    		  printSaidaDesejada(saidaDesejada, "Saida");
//	                    	  }
	                	}
	            	}
	        	}
	    	}
    	}
		
		System.out.println(counter);
	}
	
	
	@Test
	public void testarTreinamentoPermanecer(){
		for(int posicaoJogadorNossoTime = 0; posicaoJogadorNossoTime <= 15; posicaoJogadorNossoTime++){
	        for(int posicaoJogadorAdversario1 = 0; posicaoJogadorAdversario1 <= 15; posicaoJogadorAdversario1++){
	        	for(int posicaoJogadorAdversario2 = 1; posicaoJogadorAdversario2 <= 15; posicaoJogadorAdversario2 += 4)
	        	{
	        		for(int posicaoJogadorAdversario3 = 2; posicaoJogadorAdversario3 <= 15; posicaoJogadorAdversario3 += 4)
	            	{
	        			for(int posicaoJogadorAdversario4 = 3; posicaoJogadorAdversario4 <= 15; posicaoJogadorAdversario4 += 4)
	                	{
	        			    
//	                    	  double adiciona = Math.random();
//	                    	  
//	                    	  if(adiciona < 0.1)
//	                    	  {
	                    		  int [] jogadores = {posicaoJogadorNossoTime,
	                    				  posicaoJogadorAdversario1,posicaoJogadorAdversario2,
	                    				  posicaoJogadorAdversario3
	                    				  ,posicaoJogadorAdversario4};
	                    		  
	                    		  printSaidaDesejada(jogadores, "Entrada");
	                    		  
	                    		  double [] saidaDesejada = CalculosAuxiliares.getSaidaDesejadaPermanecer(posicaoJogadorNossoTime,
	                    				  Arrays.copyOfRange(jogadores, 1, jogadores.length));
	                    		  
	                    		  printSaidaDesejada(saidaDesejada, "Saida");
//	                    	  }
	                	}
	            	}
	        	}
	    	}
    	}
	}
	
	public void printSaidaDesejada(double [] saidas, String comentario){
		System.out.println(comentario+":");
		for(double saida : saidas)
		{
			System.out.print(saida + " ");
		}
		System.out.println();
	}
	
	public void printSaidaDesejada(int [] saidas, String comentario){
		System.out.println(comentario+":");
		for(double saida : saidas)
		{
			System.out.print(saida + " ");
		}
		System.out.println();
	}

}
